Reducing the time and labor of update or recovery operations on server and/or client computers is an ongoing objective of network administrators and computer system manufacturers. In many modern computer systems, the firmware, such as the basic input/output system (“BIOS”), is stored as groups of memory blocks in one or more re-programmable memory devices. These re-programmable memory devices, typically known as “flash” parts, are a type of non-volatile random access memory (“NVRAM”) that allows the firmware BIOS to be recovered or updated by using software to erase and program each flash part.
Previous methods for maintaining firmware stored on the flash memory of a computer system require a video display and input device connected to the computer to be updated and direct contact with the computer to be updated through the display and input device. In one method, the firmware in previous systems is maintained by utilizing an application program that utilizes files containing the updated firmware stored on a local device or available through a serial port connection. In the alternative, a BIOS image update may occur in previous systems through a program provided within the BIOS. While both of these methods for updating the firmware of a computer system work well when a display and/or keyboard are available and when physical access to the computer may be had, headless computers, server computers within server farms, and nodes of a computer cluster are usually without a console and are remotely operated.
Removing the need to physically operate each computer in preparation to execute a routine maintenance procedure for an image of the firmware is especially critical for headless or remote computers that need updating without utilizing a display, keyboard, or floppy drive. For instance, manually providing a new BIOS image for each computer in a server farm and/or large-scale computer clusters can take an excessive amount of time and administrative labor. Furthermore, updates that occur on various network attached computers having various operating systems become even more complex, potentially requiring a different update procedure for each computer depending on the computer's operating system manufacturer or version.
It is with respect to these considerations and others that the present invention has been made.